﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SIGCBI.Entities;
using SIGCBI.Repository;
using Microsoft.Practices.Unity;

namespace SIGCBI.BusinessLogic
{
    public interface IDetalleGuiaEntradaBL
    {
        List<DETALLE_GUIA_ENTRADA> GetAllDetalleGuiaByGuiaEntradaId(Int32 idGuia);
        List<DETALLE_GUIA_ENTRADA> GetFromDetalleGuiaByProductoNombreAndGuiaId(string descripcion, Int32 idGuia);
        DETALLE_GUIA_ENTRADA GetFromDetalleGuiaByProductoIdAndGuiaId(Int32 idproducto, Int32 idGuia);

        bool GetAllDetalleGuiaEntradasByGuiaEntradaId(int idGuiaEntrada);
        void RemoveDetalleGuiaEntradaByProductoIdAndGuiaEntradaId(int idProd, int idGuiaEntrada);

        List<DETALLE_GUIA_ENTRADA> GetFromKardexByNombreProducto_Fechas_IdProducto_OfGuiaEntrada(string descripcion, DateTime? fec1, DateTime? fec2, int IdProducto);
        List<DETALLE_GUIA_ENTRADA> GetAllFromKardexByIdProducto_OfGuiaEntrada(int IdProducto);

    }

    public class DetalleGuiaEntradaBL : IDetalleGuiaEntradaBL
    {
        [Dependency]
        public IDetalleGuiaEntradaRepository detalleGuiaEntradaRepository { get; set; }

        public List<DETALLE_GUIA_ENTRADA> GetAllDetalleGuiaByGuiaEntradaId(int idGuia)
        {
            return detalleGuiaEntradaRepository.GetAllDetalleGuiaByGuiaEntradaId(idGuia);
        }

        public List<DETALLE_GUIA_ENTRADA> GetFromDetalleGuiaByProductoNombreAndGuiaId(string descripcion, int idGuia)
        {
            return detalleGuiaEntradaRepository.GetFromDetalleGuiaByProductoNombreAndGuiaId(descripcion, idGuia);
        }

        public DETALLE_GUIA_ENTRADA GetFromDetalleGuiaByProductoIdAndGuiaId(int idproducto, int idGuia)
        {
            return detalleGuiaEntradaRepository.GetFromDetalleGuiaByProductoIdAndGuiaId(idproducto, idGuia);
        }

        public bool GetAllDetalleGuiaEntradasByGuiaEntradaId(int idGuiaEntrada)
        {
            return detalleGuiaEntradaRepository.GetAllDetalleGuiaEntradasByGuiaEntradaId(idGuiaEntrada);
        }

        public void RemoveDetalleGuiaEntradaByProductoIdAndGuiaEntradaId(int idProd, int idGuiaEntrada)
        {
            detalleGuiaEntradaRepository.RemoveDetalleGuiaEntradaByProductoIdAndGuiaEntradaId(idProd, idGuiaEntrada);
        }



        public List<DETALLE_GUIA_ENTRADA> GetFromKardexByNombreProducto_Fechas_IdProducto_OfGuiaEntrada(string descripcion, DateTime? fec1, DateTime? fec2, int IdProducto)
        {
            return detalleGuiaEntradaRepository.GetFromKardexByNombreProducto_Fechas_IdProducto_OfGuiaEntrada(descripcion, fec1, fec2, IdProducto);
        }

        public List<DETALLE_GUIA_ENTRADA> GetAllFromKardexByIdProducto_OfGuiaEntrada(int IdProducto)
        {
            return detalleGuiaEntradaRepository.GetAllFromKardexByIdProducto_OfGuiaEntrada(IdProducto);
        }
    }
}
